/**
* @author Meng Zhang
**/

#pragma once

#define DECLARE_SINGLETON(classname) \
		public: \
		static classname* Instance(); \
		private: \
		classname(); \
		~classname(){WriteLog(#classname " singleton Destroyed\n");}; \
		DISALLOW_COPY_AND_ASSIGN(classname)

#define IMPLEMENT_SINGLETON(classname)  \
	classname* classname::Instance() {      \
	static classname instance; \
	return &instance;       \
		}